from timeit import Timer

import sys
import math


def Problem():
    """
    Surprisingly there are only three numbers that can be written as 
    the sum of fourth powers of their digits:

    1634 = 1^(4) + 6^(4) + 3^(4) + 4^(4)
    8208 = 8^(4) + 2^(4) + 0^(4) + 8^(4)
    9474 = 9^(4) + 4^(4) + 7^(4) + 4^(4)

    As 1 = 1^(4) is not a sum it is not included.
    
    The sum of these numbers is 1634 + 8208 + 9474 = 19316.
    
    Find the sum of all the numbers that can be written as the 
    sum of fifth powers of their digits.
    """

  
    calc = lambda x, y: x + int(y)**5
    sum_of_fifth = lambda w: reduce(calc, str(w), 0)
    numbers = [n for n in xrange(10, 1000000) if sum_of_fifth(n) == n] 

    print numbers

    ans = sum(numbers)
    print "Answer for Problem 30 = %d" % (ans,)




    
if __name__ == "__main__":
    t = Timer(setup='from __main__ import Problem', stmt='Problem()').timeit(1)
    print "Execution time = %0.3f seconds" %(t,)